Skip to content

如何让 AI 玩 Minecraft?

标签
AI
游戏/Minecraft
AI/大语言模型/LLM
AI/强化学习/Reinforcement-learning/RL
AI/多模态/Code-as-policies
笔记/论文
字数
1157 字
阅读时间
6 分钟

主流方案

  • 纯 LLM
    • SPRING
    • Voyager
  • 基于强化学习
    • DramerV3
  • LLM 加持的强化学习
    • Voyager

论文

Voyager | An Open-Ended Embodied Agent with Large Language Models

Voyager 更像是一个 Minecraft 游戏操作 API 调用的代码的代码生成器

  • 它会通过 GPT4 生成不同的操作的调用代码。
  • 比如如果要建造一个钻石剑,就是直接生成通过 MineDojo 包装的 API 的代码,包装成一个 createDiamondSward 函数,等下次需要的时候就直接调用了。
  • 所以事实上 Voyager 是穷举 Minecraft 游戏行为的 Agent,然后把结果和可以用的过程体现为一组函数,也就是论文中提到的 resuable skill set。
  • 或者说 Code as action。

读后感受

  • 😱 这里面会有一些机器学习或者强化学习的坑,比如事实上包括 Voyager 和其他的类似的 Planning Agent 都是站在「人类行为」的假设上进行的
  • 💡 分享到了另外的一个 2304.03442 Generative Agents: Interactive Simulacra of Human Behavior 论文,这篇论文把大佬说服了认为我们可能活在模拟程序中,HTML 版本
  • ❓ 有一个比较有趣的思考是:和 MineDojo 这样的 Minecraft API 调用环境不同的是,其实如果我们期望在现实世界中给机器人(robotics)添加 LLM 的 code generation 能力,我们的机器人是不会获得任何的可以用于 CoT 的错误的,因为现实世界中不会返回错误,它更不可能有一个像是 API 调用一样的文本形式的错误可以让我们以文本的形式输入给 LLM
  • ❓ Voyager 的实现中提到的 Nearby Entities 是一个非常明确的,Agent 本身自己会知道的精确的地址的游戏对象,比如如果旁边 32 块内有一个僵尸,那么 Agent 会通过 API 的形式直接知道有僵尸,以及僵尸在什么地方,这个实现和 OpenAI 的 DOTA Bot 类似,DOTA Bot 就是建立在对游戏内对局状态的非常全面的了解之上的。但是对于人类玩家而言我们是不会知道的,通常我们如果屏幕中看不到僵尸的话要么是能听到,要么是小地图上能看到。
  • 拓展:

Plan4MC

Diffusion Forcing: Next-token Prediction Meets Full-Sequence Diffusion

实现

  • LLM 如何参与进来
    • 会用文本的形式描述 LLM 当前屏幕上的状态,比如
      • 你现在看到了
        • 西边,距离 1 步,有草
        • 北边,距离 6 步,有树
      • 你现在面向草
      • 你现在的状态
        • 血量:9/9
        • 饥饿:9/9
    • 然后 LLM 会被要求输出接下来期望的状态,由对应的代码执行

社区和资源

工具

强化学习

数据集

贡献者

页面历史

撰写